鳥哥私房菜

您所在的位置:网站首页 linux fifo 鳥哥私房菜

鳥哥私房菜

#鳥哥私房菜| 来源: 网络整理| 查看: 265

最近更新時間: 2019/04/29

在前一章我們認識了Linux系統下的檔案權限概念以及目錄的配置說明。 在這個章節當中,我們就直接來進一步的操作與管理檔案及目錄吧!包括在不同的目錄間變換、 建立與刪除目錄、建立與刪除檔案,還有尋找檔案、查閱檔案內容等等,都會在這個章節作個簡單的介紹啊!

6.1 目錄與路徑 6.1.1 相對路徑與絕對路徑 6.1.2 目錄的相關操作: cd, pwd, mkdir, rmdir 6.1.3 關於執行檔路徑的變數: $PATH 6.2 檔案與目錄管理 6.2.1 檔案與目錄的檢視: ls 6.2.2 複製、刪除與移動: cp, rm, mv 6.2.3 取得路徑的檔案名稱與目錄名稱 6.3 檔案內容查閱 6.3.1 直接檢視檔案內容: cat, tac, nl 6.3.2 可翻頁檢視: more, less 6.3.3 資料擷取: head, tail 6.3.4 非純文字檔: od 6.3.5 修改檔案時間與建置新檔: touch 6.4 檔案與目錄的預設權限與隱藏權限 6.4.1 檔案預設權限:umask 6.4.2 檔案隱藏屬性: chattr, lsattr 6.4.3 檔案特殊權限:SUID, SGID, SBIT, 權限設定 6.4.4 觀察檔案類型:file 6.5 指令與檔案的搜尋 指令檔名的搜尋:which 檔案檔名的搜尋:whereis, locate / updatedb, find 6.6 極重要的複習!權限與指令間的關係 6.7 重點回顧 6.8 本章習題 6.9 參考資料與延伸閱讀 針對本文的建議:http://phorum.vbird.org/viewtopic.php?t=23879 6.1 目錄與路徑

由前一章Linux的檔案權限與目錄配置中透過FHS瞭解了Linux的『樹狀目錄』概念之後, 接下來就得要實際的來搞定一些基本的路徑問題了!這些目錄的問題當中,最重要的莫過於前一章也談過的『絕對路徑』與『相對路徑』的意義啦! 絕對/相對路徑的寫法並不相同,要特別注意。此外,當妳下達指令時,該指令是透過什麼功能來取得的? 這與PATH這個變數有關呢!底下就讓我們來談談囉!

6.1.1 相對路徑與絕對路徑

在開始目錄的切換之前,你必須要先瞭解一下所謂的『路徑(PATH)』, 有趣的是:什麼是『相對路徑』與『絕對路徑』? 雖然前一章已經稍微針對這個議題提過一次,不過,這裡不厭其煩的再次的強調一下!

絕對路徑:路徑的寫法『一定由根目錄 / 寫起』,例如: /usr/share/doc 這個目錄。 相對路徑:路徑的寫法『不是由 / 寫起』,例如由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成: 『cd ../man』這就是相對路徑的寫法啦!相對路徑意指『相對於目前工作目錄的路徑!』 相對路徑的用途

那麼相對路徑與絕對路徑有什麼了不起呀?喝!那可真的是了不起了!假設你寫了一個軟體, 這個軟體共需要三個目錄,分別是 etc, bin, man 這三個目錄,然而由於不同的人喜歡安裝在不同的目錄之下, 假設甲安裝的目錄是 /usr/local/packages/etc, /usr/local/packages/bin 及 /usr/local/packages/man ,不過乙卻喜歡安裝在 /home/packages/etc, /home/packages/bin, /home/packages/man 這三個目錄中,請問如果需要用到絕對路徑的話,那麼是否很麻煩呢?是的! 如此一來每個目錄下的東西就很難對應的起來!這個時候相對路徑的寫法就顯的特別的重要了!

此外,如果你跟鳥哥一樣,喜歡將路徑的名字寫的很長,好讓自己知道那個目錄是在幹什麼的,例如: /cluster/raid/output/taiwan2006/smoke 這個目錄,而另一個目錄在 /cluster/raid/output/taiwan2006/cctm ,那麼我從第一個要到第二個目錄去的話,怎麼寫比較方便? 當然是『 cd ../cctm 』比較方便囉!對吧!

絕對路徑的用途

但是對於檔名的正確性來說,『絕對路徑的正確度要比較好~』。 一般來說,鳥哥會建議你,如果是在寫程式 (shell scripts) 來管理系統的條件下,務必使用絕對路徑的寫法。 怎麼說呢?因為絕對路徑的寫法雖然比較麻煩,但是可以肯定這個寫法絕對不會有問題。 如果使用相對路徑在程式當中,則可能由於你執行的工作環境不同,導致一些問題的發生。 這個問題在工作排程(at, cron, 第十五章)當中尤其重要!這個現象我們在十二章、shell script時,會再次的提醒你喔! ^_^

6.1.2 目錄的相關操作

我們之前稍微提到變換目錄的指令是cd,還有哪些可以進行目錄操作的指令呢? 例如建立目錄啊、刪除目錄之類的~還有,得要先知道的,就是有哪些比較特殊的目錄呢? 舉例來說,底下這些就是比較特殊的目錄,得要用力的記下來才行:

. 代表此層目錄 .. 代表上一層目錄 - 代表前一個工作目錄 ~ 代表『目前使用者身份』所在的家目錄 ~account 代表 account 這個使用者的家目錄(account是個帳號名稱)

需要特別注意的是:在所有目錄底下都會存在的兩個目錄,分別是『.』與『..』 分別代表此層與上層目錄的意思。那麼來思考一下底下這個例題:

例題: 請問在Linux底下,根目錄下有沒有上層目錄(..)存在? 答: 若使用『 ls -al / 』去查詢,可以看到根目錄下確實存在 . 與 .. 兩個目錄,再仔細的查閱, 可發現這兩個目錄的屬性與權限完全一致,這代表根目錄的上一層(..)與根目錄自己(.)是同一個目錄。

底下我們就來談一談幾個常見的處理目錄的指令吧:

cd:變換目錄 pwd:顯示目前的目錄 mkdir:建立一個新的目錄 rmdir:刪除一個空的目錄 cd (change directory, 變換目錄)

我們知道dmtsai這個使用者的家目錄是/home/dmtsai/,而root家目錄則是/root/,假設我以root身份在 Linux系統中,那麼簡單的說明一下這幾個特殊的目錄的意義是:

[dmtsai@study ~]$ su - # 先切換身份成為 root 看看! [root@study ~]# cd [相對路徑或絕對路徑] # 最重要的就是目錄的絕對路徑與相對路徑,還有一些特殊目錄的符號囉! [root@study ~]# cd ~dmtsai # 代表去到 dmtsai 這個使用者的家目錄,亦即 /home/dmtsai [root@study dmtsai]# cd ~ # 表示回到自己的家目錄,亦即是 /root 這個目錄 [root@study ~]# cd # 沒有加上任何路徑,也還是代表回到自己家目錄的意思喔! [root@study ~]# cd .. # 表示去到目前的上層目錄,亦即是 /root 的上層目錄的意思; [root@study /]# cd - # 表示回到剛剛的那個目錄,也就是 /root 囉~ [root@study ~]# cd /var/spool/mail # 這個就是絕對路徑的寫法!直接指定要去的完整路徑名稱! [root@study mail]# cd ../postfix # 這個是相對路徑的寫法,我們由/var/spool/mail 去到/var/spool/postfix 就這樣寫!

cd是Change Directory的縮寫,這是用來變換工作目錄的指令。注意,目錄名稱與cd指令之間存在一個空格。 一登入Linux系統後,每個帳號都會在自己帳號的家目錄中。那回到上一層目錄可以用『 cd .. 』。 利用相對路徑的寫法必須要確認你目前的路徑才能正確的去到想要去的目錄。例如上表當中最後一個例子, 你必須要確認你是在/var/spool/mail當中,並且知道在/var/spool當中有個 postfix 的目錄才行啊~ 這樣才能使用cd ../postfix 去到正確的目錄說,否則就要直接輸入cd /var/spool/postfix 囉~

其實,我們的提示字元,亦即那個 [root@study ~]# 當中,就已經有指出目前的目錄了, 剛登入時會到自己的家目錄,而家目錄還有一個代碼,那就是『 ~ 』符號! 例如上面的例子可以發現,使用『 cd ~ 』可以回到個人的家目錄裡頭去呢! 另外,針對 cd 的使用方法,如果僅輸入 cd 時,代表的就是『 cd ~ 』的意思喔~ 亦即是會回到自己的家目錄啦!而那個『 cd - 』比較難以理解,請自行多做幾次練習,就會比較明白了。

Tips 還是要一再地提醒,我們的 Linux 的預設指令列模式 (bash shell) 具有檔案補齊功能, 你要常常利用 [tab] 按鍵來達成你的目錄完整性啊!這可是個好習慣啊~可以避免你按錯鍵盤輸入錯字說~ ^_^ pwd (顯示目前所在的目錄) [root@study ~]# pwd [-P] 選項與參數: -P :顯示出確實的路徑,而非使用連結 (link) 路徑。 範例:單純顯示出目前的工作目錄: [root@study ~]# pwd /root


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3